0c842708c0fa1ea64e810dfe599b8ccfc8215626,plugins/org.eclipse.emf.index/src/org/eclipse/emf/index/resource/impl/DefaultEmfResourceChangeListenerImpl.java,DefaultEmfResourceChangeListenerImpl,resourceChanged,#URI#IIndexStore#IndexFeeder#,33
Before Change
feeder.createEObjectDescriptor(element, getEObjectName(element), getEObjectDisplayName(element),
getEObjectUserData(element));
for (EReference eReference : element.eClass().getEAllReferences()) {
if (isIndexReference(eReference, element)) {
feeder.createECrossReferenceDescriptor(element, eReference);
}
}
}
After Change
if (resource != null) {
feeder.createResourceDescriptor(resource, getResourceUserData(resource));
for (Iterator<EObject> i = EcoreUtil.getAllProperContents(resource, false); i.hasNext();) {
EObject element = i.next();
if (isIndexElement(element)) {
feeder.createEObjectDescriptor(element, getEObjectName(element), getEObjectDisplayName(element),
getEObjectUserData(element));
URI sourceURI = EcoreUtil.getURI(element);
if (sourceURI != null) {
for (EReference eReference : element.eClass().getEAllReferences()) {
String eReferenceName = eReference.getName();
if (isIndexReference(eReference, element)) {
if (eReference.isMany()) {
List<?> targets = (List<?>) ((InternalEObject) element).eGet(eReference, false);
for (int index = 0; index < targets.size(); ++index) {
Object target = targets.get(index);
createECrossReferenceDescriptor(feeder, sourceURI, eReferenceName, index,
target);
}
}
else {
Object target = ((InternalEObject) element).eGet(eReference, false);
createECrossReferenceDescriptor(feeder, sourceURI, eReferenceName,
ECrossReferenceDescriptor.NO_INDEX, target);
}
}
}